﻿using Seagull.BarTender.Print;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; 


namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string btw = Environment.CurrentDirectory+"\\111.btw"; // 替换为实际的标签文件路径

            // 使用using语句自动管理引擎资源
            Engine btEngine = new Engine();
            {
                btEngine.Start(); // 启动引擎
                LabelFormatDocument btFormat = btEngine.Documents.Open(btw);
                btFormat.PrintSetup.PrinterName = "Zebra ZT411R (300 dpi) 网络";
                btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //打印份数
                                                                // 打印标签或进行其他操作

                // 检查并替换名为 "Field1" 的数据源字段
                SetFieldValueIfExists(btFormat,"name", "nxv防守方那個電腦很高檔的EEEEEEEEEEEEEEEEEEEEEEEE");
                SetFieldValueIfExists(btFormat, "barcode", "EEEEEEEEEEEEEEEEEEEEEEEE");
                SetFieldValueIfExists(btFormat, "epc", "EEEEEEEEEEEEEEEEEEEEEEEE");


                //打印
                btFormat.Print();

                btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.PerSession;
                btFormat.Close(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges);//不保存对打开模板的修改

                // 如果需要设置打印选项
                // PrintSetup setup = btFormat.PrintSetup;
                // setup.IdenticalCopiesOfLabel = 2;
                // btFormat.Print();
                // 文档会在这里自动关闭和释放

                btEngine.Stop(); // 停止引擎
            } // 引擎会在这里自动释放
        }

        // 辅助方法：安全设置数据源字段值
        void SetFieldValueIfExists(LabelFormatDocument format, string fieldName, string value)
        {
            /* if (format.SubStrings.Contains(fieldName))
             {
                 format.SubStrings[fieldName].Value = value;
                 Console.WriteLine($"已成功设置字段 '{fieldName}' 的值");
             }
             else
             {
                 Console.WriteLine($"警告: 模板中不存在名为 '{fieldName}' 的数据源字段");
             }*/

            format.SubStrings[fieldName].Value = value;
        }
    }
}
